package com.dts.common.core.page;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * APP端统一分页查询响应实体类
 * 返回格式: {"success": true, "rows": [...], "total": 100, "page": 1}
 *
 * @author dts
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AppPageResult<T> implements Serializable
{
    private static final long serialVersionUID = 1L;

    /** 是否成功 */
    private Boolean success;

    /** 总记录数 */
    private Long total;

    /** 当前页码 */
    private Integer page;

    /** 数据列表 */
    private List<T> rows;

    /**
     * 返回成功分页消息
     *
     * @param rows 数据列表
     * @param total 总记录数
     * @param page 当前页码
     * @return 成功消息
     */
    public static <T> AppPageResult<T> success(List<T> rows, Long total, Integer page)
    {
        return new AppPageResult<>(true, total, page, rows);
    }

    /**
     * 返回失败分页消息
     *
     * @param rows 数据列表
     * @param total 总记录数
     * @param page 当前页码
     * @return 失败消息
     */
    public static <T> AppPageResult<T> error(List<T> rows, Long total, Integer page)
    {
        return new AppPageResult<>(false, total, page, rows);
    }
}

